/*
题目：构建乘积数组
给定一个数组 A[0,1,…,n-1]，请构建一个数组 B[0,1,…,n-1]，其中 B[i] 的值是数组 A 中除了下标 i 以外的元素的积,
即 B[i]=A[0]×A[1]×…×A[i-1]×A[i+1]×…×A[n-1]。不能使用除法。
 */
import java.util.Arrays;
public class ConstructArrBetterB {
    public int[] constructArr(int[] a) {
        if(a.length == 0) return new int[0];
        //最终优化版
        int[] b = new int[a.length];
        Arrays.fill(b, 1);
        int left = 1;
        int right = 1;
        int len = a.length;
        for (int i = 0; i < len; i++) {
            b[i] *= left;
            left *= a[i];

            b[len - 1 - i] *= right;
            right *= a[len - 1 - i];
        }
        return b;
    }
}
